Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


meshchatx/src/frontend/components/network-visualiser/NetworkVisualiser.vue 0492e7d7bf956b0eacdb4fc40c6e87151db604e7 (0492e7d7) Text, 45.32 KB

Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 h-full min-w-0 relative dark:bg-zinc-950 overflow-hidden"Tb4b4b4>
T8b949e<!-- network -->
Tb4b4b4<Tff7b72div Te6edf3idTff7b72=Ta5d6ff"network" Te6edf3classTff7b72=Ta5d6ff"w-full h-full"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- loading overlay -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isLoadingTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute inset-0 z-20 flex items-center justify-center bg-zinc-950/10 backdrop-blur-[2px] transition-all duration-300"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-white/90 dark:bg-zinc-900/90 border border-gray-200 dark:border-zinc-800 rounded-2xl px-6 py-4 flex flex-col items-center gap-3"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"w-12 h-12 border-4 border-blue-500/20 border-t-blue-500 rounded-full animate-spin"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"absolute inset-0 flex items-center justify-center"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"w-6 h-6 border-4 border-emerald-500/20 border-b-emerald-500 rounded-full animate-spin-reverse"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm font-medium text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{ Te6edf3loadingStatus Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3totalNodesToLoad Tff7b72> T79c0ff0Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"w-48 space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"h-1.5 bg-gray-200 dark:bg-zinc-800 rounded-full overflow-hidden"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"h-full bg-blue-500 transition-all duration-300 shadow-[0_0_8px_rgba(59,130,246,0.5)]"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3widthTff7b72: Ta5d6ff`Tffd700${Tb4b4b4(Te6edf3loadedNodesCount Tff7b72/ Te6edf3totalNodesToLoadTb4b4b4) Tff7b72* T79c0ff100Tffd700}Ta5d6ff%Ta5d6ff` Tb4b4b4}Ta5d6ff"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3totalBatches Tff7b72> T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex justify-between items-center text-[10px] font-bold text-gray-500 dark:text-zinc-500 uppercase tracking-wider"
Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Batch Tff7b72{{ Te6edf3currentBatch Tff7b72}} / Tff7b72{{ Te6edf3totalBatches Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Tb4b4b4(Te6edf3loadedNodesCount Tff7b72/ Te6edf3totalNodesToLoadTb4b4b4) Tff7b72* T79c0ff100Tb4b4b4) Tff7b72}}%Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- controls & search -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"absolute top-2 left-2 right-2 sm:top-4 sm:left-4 sm:right-4 z-10 flex flex-col sm:flex-row gap-2 pointer-events-none"
Tb4b4b4>
T8b949e<!-- header glass card -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"pointer-events-auto border border-gray-200/50 dark:border-zinc-800/50 bg-white/70 dark:bg-zinc-900/70 backdrop-blur-xl rounded-2xl overflow-hidden w-full sm:min-w-[280px] sm:w-auto transition-all duration-300"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex items-center px-4 sm:px-5 py-3 sm:py-4 cursor-pointer hover:bg-gray-50/50 dark:hover:bg-zinc-800/50 transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3isShowingControls Tff7b72= Tff7b72!Te6edf3isShowingControlsTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 flex flex-col min-w-0 mr-2"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-zinc-100 tracking-tight truncate"
Tb4b4b4>Reticulum MeshTb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"text-[10px] uppercase font-bold text-gray-500 dark:text-zinc-500 tracking-widest truncate"
Tb4b4b4>Network VisualizerTb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"inline-flex items-center justify-center w-8 h-8 sm:w-9 sm:h-9 rounded-xl bg-blue-600 hover:bg-blue-700 dark:bg-blue-600 dark:hover:bg-blue-700 text-white transition-all active:scale-95"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3isUpdating Tff7b72|| Te6edf3isLoadingTa5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3manualUpdateTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72svg
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isUpdating Tff7b72&& Tff7b72!Te6edf3isLoadingTa5d6ff"
Te6edf3xmlnsTff7b72=Ta5d6ff"http://www.w3.org/2000/svg"
Te6edf3fillTff7b72=Ta5d6ff"none"
Te6edf3viewBoxTff7b72=Ta5d6ff"0 0 24 24"
Te6edf3stroke-widthTff7b72=Ta5d6ff"2"
Te6edf3strokeTff7b72=Ta5d6ff"currentColor"
Te6edf3classTff7b72=Ta5d6ff"w-4 h-4 sm:w-5 sm:h-5"
Tb4b4b4>
Tb4b4b4<Tff7b72path
Te6edf3stroke-linecapTff7b72=Ta5d6ff"round"
Te6edf3stroke-linejoinTff7b72=Ta5d6ff"round"
Te6edf3dTff7b72=Ta5d6ff"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72svgTb4b4b4>
Tb4b4b4<Tff7b72svg
Te6edf3v-else
Te6edf3classTff7b72=Ta5d6ff"animate-spin h-4 w-4 sm:h-5 sm:w-5"
Te6edf3xmlnsTff7b72=Ta5d6ff"http://www.w3.org/2000/svg"
Te6edf3fillTff7b72=Ta5d6ff"none"
Te6edf3viewBoxTff7b72=Ta5d6ff"0 0 24 24"
Tb4b4b4>
Tb4b4b4<Tff7b72circle
Te6edf3classTff7b72=Ta5d6ff"opacity-25"
Te6edf3cxTff7b72=Ta5d6ff"12"
Te6edf3cyTff7b72=Ta5d6ff"12"
Te6edf3rTff7b72=Ta5d6ff"10"
Te6edf3strokeTff7b72=Ta5d6ff"currentColor"
Te6edf3stroke-widthTff7b72=Ta5d6ff"4"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72circleTb4b4b4>
Tb4b4b4<Tff7b72path
Te6edf3classTff7b72=Ta5d6ff"opacity-75"
Te6edf3fillTff7b72=Ta5d6ff"currentColor"
Te6edf3dTff7b72=Ta5d6ff"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72pathTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72svgTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-5 sm:w-6 flex justify-center"Tb4b4b4>
Tb4b4b4<Tff7b72svg
Te6edf3xmlnsTff7b72=Ta5d6ff"http://www.w3.org/2000/svg"
Te6edf3viewBoxTff7b72=Ta5d6ff"0 0 20 20"
Te6edf3fillTff7b72=Ta5d6ff"currentColor"
Te6edf3classTff7b72=Ta5d6ff"w-4 h-4 sm:w-5 sm:h-5 text-gray-400 transition-transform duration-300"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'rotate-180'Tff7b72: Te6edf3isShowingControls Tb4b4b4}Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72path
Te6edf3fill-ruleTff7b72=Ta5d6ff"evenodd"
Te6edf3dTff7b72=Ta5d6ff"M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z"
Te6edf3clip-ruleTff7b72=Ta5d6ff"evenodd"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72svgTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-showTff7b72=Ta5d6ff"Te6edf3isShowingControlsTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-5 pb-5 space-y-4 animate-in fade-in slide-in-from-top-2 duration-300"
Tb4b4b4>
T8b949e<!-- divider -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"h-px bg-gradient-to-r from-transparent via-gray-200 dark:via-zinc-800 to-transparent"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- auto update toggle -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3forTff7b72=Ta5d6ff"auto-reload"
Te6edf3classTff7b72=Ta5d6ff"text-sm font-semibold text-gray-700 dark:text-zinc-300 cursor-pointer"
Tb4b4b4>Auto UpdateTb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"auto-reload" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3autoReloadTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- physics toggle -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3forTff7b72=Ta5d6ff"enable-physics"
Te6edf3classTff7b72=Ta5d6ff"text-sm font-semibold text-gray-700 dark:text-zinc-300 cursor-pointer"
Tb4b4b4>Live LayoutTb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"enable-physics" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3enablePhysicsTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- stats -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-3 pt-2"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50/50 dark:bg-zinc-800/50 rounded-xl p-3 border border-gray-100 dark:border-zinc-700/50"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-gray-500 dark:text-zinc-500 uppercase tracking-wider mb-1"
Tb4b4b4>
Nodes
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold text-blue-600 dark:text-blue-400"Tb4b4b4>Tff7b72{{ Te6edf3nodesTb4b4b4.Te6edf3length Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-gray-50/50 dark:bg-zinc-800/50 rounded-xl p-3 border border-gray-100 dark:border-zinc-700/50"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-gray-500 dark:text-zinc-500 uppercase tracking-wider mb-1"
Tb4b4b4>
Links
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold text-emerald-600 dark:text-emerald-400"Tb4b4b4>
Tff7b72{{ Te6edf3edgesTb4b4b4.Te6edf3length Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"bg-zinc-950/5 dark:bg-white/5 rounded-xl p-3 border border-gray-100 dark:border-zinc-700/50"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-gray-500 dark:text-zinc-500 uppercase tracking-wider mb-2"
Tb4b4b4>
Interfaces
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-2 h-2 rounded-full bg-emerald-500"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-xs font-bold text-gray-700 dark:text-zinc-300"
Tb4b4b4>Tff7b72{{ Te6edf3onlineInterfacesTb4b4b4.Te6edf3length Tff7b72}} OnlineTb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-2 h-2 rounded-full bg-red-500"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-xs font-bold text-gray-700 dark:text-zinc-300"
Tb4b4b4>Tff7b72{{ Te6edf3offlineInterfacesTb4b4b4.Te6edf3length Tff7b72}} OfflineTb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- search box -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"sm:ml-auto w-full sm:w-auto pointer-events-auto"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative group"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none text-gray-400 group-focus-within:text-blue-500 transition-colors"
Tb4b4b4>
Tb4b4b4<Tff7b72svg Te6edf3xmlnsTff7b72=Ta5d6ff"http://www.w3.org/2000/svg" Te6edf3viewBoxTff7b72=Ta5d6ff"0 0 20 20" Te6edf3fillTff7b72=Ta5d6ff"currentColor" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4"Tb4b4b4>
Tb4b4b4<Tff7b72path
Te6edf3fill-ruleTff7b72=Ta5d6ff"evenodd"
Te6edf3dTff7b72=Ta5d6ff"M9 3.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM2.25 10a7.75 7.75 0 1 1 14.03 4.5l3.47 3.47a.75.75 0 0 1-1.06 1.06l-3.47-3.47A7.75 7.75 0 0 1 2.25 10Z"
Te6edf3clip-ruleTff7b72=Ta5d6ff"evenodd"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72svgTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3searchQueryTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Ta5d6ff`Ta5d6ffSearch nodes (Tffd700${Te6edf3nodesTb4b4b4.Te6edf3lengthTffd700}Ta5d6ff)...Ta5d6ff`Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"block w-full sm:w-64 pl-9 pr-10 py-2.5 sm:py-3 bg-white/70 dark:bg-zinc-900/70 backdrop-blur-xl border border-gray-200/50 dark:border-zinc-800/50 rounded-2xl text-xs font-semibold focus:outline-none focus:ring-2 focus:ring-blue-500/50 sm:focus:w-80 transition-all dark:text-zinc-100 shadow-sm"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3searchQueryTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute inset-y-0 right-0 pr-3 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-zinc-200 transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3searchQuery Tff7b72= Ta5d6ff''Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72svg Te6edf3xmlnsTff7b72=Ta5d6ff"http://www.w3.org/2000/svg" Te6edf3viewBoxTff7b72=Ta5d6ff"0 0 20 20" Te6edf3fillTff7b72=Ta5d6ff"currentColor" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4"Tb4b4b4>
Tb4b4b4<Tff7b72path
Te6edf3dTff7b72=Ta5d6ff"M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72svgTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- navigation breadcrumb style legend -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"absolute bottom-4 right-4 z-10 hidden sm:flex items-center gap-2 px-4 py-2 rounded-full border border-gray-200/50 dark:border-zinc-800/50 bg-white/70 dark:bg-zinc-900/70 backdrop-blur-xl"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-3 h-3 rounded-full border-2 border-emerald-500 bg-emerald-500/20"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-gray-600 dark:text-zinc-400 uppercase"Tb4b4b4>DirectTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-px h-3 bg-gray-200 dark:bg-zinc-800 mx-1"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-3 h-3 rounded-full border-2 border-blue-500/50 bg-blue-500/10"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold text-gray-600 dark:text-zinc-400 uppercase"Tb4b4b4>Multi-HopTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>

Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Ta5d6ff"vis-network/styles/vis-network.css"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3Network Tb4b4b4} Tff7b72from Ta5d6ff"vis-network"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3DataSet Tb4b4b4} Tff7b72from Ta5d6ff"vis-data"Tb4b4b4;
Tff7b72import Tff7b72* Tff7b72as Te6edf3mdi Tff7b72from Ta5d6ff"@mdi/js"Tb4b4b4;
Tff7b72import Te6edf3Utils Tff7b72from Ta5d6ff"../../js/Utils"Tb4b4b4;
Tff7b72import Te6edf3GlobalEmitter Tff7b72from Ta5d6ff"../../js/GlobalEmitter"Tb4b4b4;
Tff7b72import Te6edf3Toggle Tff7b72from Ta5d6ff"../forms/Toggle.vue"Tb4b4b4;

Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"NetworkVisualiser"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3ToggleTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3reticulumLogoPathTff7b72: Ta5d6ff"/assets/images/reticulum_logo_512.png"Tb4b4b4,
Te6edf3configTff7b72: Tff7b72nullTb4b4b4,
Te6edf3autoReloadTff7b72: Tff7b72falseTb4b4b4,
Te6edf3reloadIntervalTff7b72: Tff7b72nullTb4b4b4,
Te6edf3isShowingControlsTff7b72: Tff7b72trueTb4b4b4,
Te6edf3isUpdatingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isLoadingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3enablePhysicsTff7b72: Tff7b72trueTb4b4b4,
Te6edf3enableOrbitTff7b72: Tff7b72falseTb4b4b4,
Te6edf3orbitAnimationFrameTff7b72: Tff7b72nullTb4b4b4,
Te6edf3loadingStatusTff7b72: Ta5d6ff"Initializing..."Tb4b4b4,
Te6edf3loadedNodesCountTff7b72: T79c0ff0Tb4b4b4,
Te6edf3totalNodesToLoadTff7b72: T79c0ff0Tb4b4b4,
Te6edf3currentBatchTff7b72: T79c0ff0Tb4b4b4,
Te6edf3totalBatchesTff7b72: T79c0ff0Tb4b4b4,

Te6edf3interfacesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3pathTableTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3announcesTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3conversationsTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,

Te6edf3networkTff7b72: Tff7b72nullTb4b4b4,
Te6edf3nodesTff7b72: Tff7b72new Te6edf3DataSetTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3edgesTff7b72: Tff7b72new Te6edf3DataSetTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3iconCacheTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,

Te6edf3pageSizeTff7b72: T79c0ff100Tb4b4b4,
Te6edf3searchQueryTff7b72: Ta5d6ff""Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3onlineInterfacesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3interfacesTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3iTb4b4b4) Tb4b4b4=> Te6edf3iTb4b4b4.Te6edf3statusTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3offlineInterfacesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3interfacesTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3iTb4b4b4) Tb4b4b4=> Tff7b72!Te6edf3iTb4b4b4.Te6edf3statusTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3watchTff7b72: Tb4b4b4{
Te6edf3autoReloadTb4b4b4(Te6edf3valTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3valTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3manualUpdateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3enablePhysicsTb4b4b4(Te6edf3valTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3setOptionsTb4b4b4(Tb4b4b4{ Te6edf3physicsTff7b72: Tb4b4b4{ Te6edf3enabledTff7b72: Te6edf3val Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3enableOrbit Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3enableOrbitTb4b4b4(Te6edf3valTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3valTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3startOrbitTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3stopOrbitTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3searchQueryTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// we don't want to trigger a full update from server, just re-run the filtering on existing data
Tff7b72thisTb4b4b4.Te6edf3processVisualizationTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3beforeUnmountTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3_toggleOrbitHandlerTb4b4b4) Tb4b4b4{
Te6edf3GlobalEmitterTb4b4b4.Te6edf3offTb4b4b4(Ta5d6ff"toggle-orbit"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3_toggleOrbitHandlerTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3stopOrbitTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3reloadIntervalTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3destroyTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// Clear icon cache to free memory
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3key Tff7b72in Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4) Tb4b4b4{
Tff7b72delete Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4[Te6edf3keyTb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3iconCache Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isMobile Tff7b72= Tffa657windowTb4b4b4.Te6edf3innerWidth Tff7b72< T79c0ff640Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3isMobileTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isShowingControls Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}

Tff7b72thisTb4b4b4.Te6edf3_toggleOrbitHandler Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3enableOrbit Tff7b72= Tff7b72!Tff7b72thisTb4b4b4.Te6edf3enableOrbitTb4b4b4;
Tb4b4b4}Tb4b4b4;
Te6edf3GlobalEmitterTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"toggle-orbit"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3_toggleOrbitHandlerTb4b4b4)Tb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3initTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Tff7b72async Te6edf3getInterfaceStatsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/interface-statsTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3interfaces Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3interface_statsTff7b72?Tb4b4b4.Te6edf3interfaces Tff7b72?? Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to fetch interface stats"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getPathTableBatchTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3pathTable Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72let Te6edf3offset Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72let Te6edf3totalCount Tff7b72= T79c0ff1Tb4b4b4; T8b949e// dummy initial value

Tff7b72while Tb4b4b4(Te6edf3offset Tff7b72< Te6edf3totalCountTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff`Ta5d6ffLoading Paths (Tffd700${Te6edf3offsetTffd700}Ta5d6ff / Tffd700${Te6edf3totalCount Tff7b72=== T79c0ff1 Tff7b72? Ta5d6ff"..." Tff7b72: Te6edf3totalCountTffd700}Ta5d6ff)Ta5d6ff`Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/path-tableTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3limitTff7b72: Tff7b72thisTb4b4b4.Te6edf3pageSizeTb4b4b4, Te6edf3offsetTff7b72: Te6edf3offset Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4...Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3path_tableTb4b4b4)Tb4b4b4;
Te6edf3totalCount Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3total_countTb4b4b4;
Te6edf3offset Tff7b72+= Tff7b72thisTb4b4b4.Te6edf3pageSizeTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to fetch path table batch"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getAnnouncesBatchTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3announces Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72let Te6edf3offset Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72let Te6edf3totalCount Tff7b72= T79c0ff1Tb4b4b4;

Tff7b72while Tb4b4b4(Te6edf3offset Tff7b72< Te6edf3totalCountTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff`Ta5d6ffLoading Announces (Tffd700${Te6edf3offsetTffd700}Ta5d6ff / Tffd700${Te6edf3totalCount Tff7b72=== T79c0ff1 Tff7b72? Ta5d6ff"..." Tff7b72: Te6edf3totalCountTffd700}Ta5d6ff)Ta5d6ff`Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/announcesTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3limitTff7b72: Tff7b72thisTb4b4b4.Te6edf3pageSizeTb4b4b4, Te6edf3offsetTff7b72: Te6edf3offset Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Tff7b72for Tb4b4b4(Tff7b72const Te6edf3announce Tff7b72of Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3announcesTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3announcesTb4b4b4[Te6edf3announceTb4b4b4.Te6edf3destination_hashTb4b4b4] Tff7b72= Te6edf3announceTb4b4b4;
Tb4b4b4}

Te6edf3totalCount Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3total_countTb4b4b4;
Te6edf3offset Tff7b72+= Tff7b72thisTb4b4b4.Te6edf3pageSizeTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to fetch announces batch"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getConfigTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3config Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3configTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to fetch config"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getConversationsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/lxmf/conversationsTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3conversations Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3conversation Tff7b72of Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3conversationsTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3conversationsTb4b4b4[Te6edf3conversationTb4b4b4.Te6edf3destination_hashTb4b4b4] Tff7b72= Te6edf3conversationTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to fetch conversations"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3createIconImageTb4b4b4(Te6edf3iconNameTb4b4b4, Te6edf3foregroundColorTb4b4b4, Te6edf3backgroundColorTb4b4b4, Te6edf3size Tff7b72= T79c0ff64Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3cacheKey Tff7b72= Ta5d6ff`Tffd700${Te6edf3iconNameTffd700}Ta5d6ff-Tffd700${Te6edf3foregroundColorTffd700}Ta5d6ff-Tffd700${Te6edf3backgroundColorTffd700}Ta5d6ff-Tffd700${Te6edf3sizeTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4[Te6edf3cacheKeyTb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4[Te6edf3cacheKeyTb4b4b4]Tb4b4b4;
Tb4b4b4}

T8b949e// Limit cache size to 500 icons (approx 15-20MB max)
Tff7b72const Te6edf3cacheKeys Tff7b72= Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3cacheKeysTb4b4b4.Te6edf3length Tff7b72>= T79c0ff500Tb4b4b4) Tb4b4b4{
T8b949e// simple FIFO eviction
Tff7b72delete Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4[Te6edf3cacheKeysTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4]Tb4b4b4;
Tb4b4b4}

Tff7b72return Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3resolveTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3canvas Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"canvas"Tb4b4b4)Tb4b4b4;
Te6edf3canvasTb4b4b4.Te6edf3width Tff7b72= Te6edf3sizeTb4b4b4;
Te6edf3canvasTb4b4b4.Te6edf3height Tff7b72= Te6edf3sizeTb4b4b4;
Tff7b72const Te6edf3ctx Tff7b72= Te6edf3canvasTb4b4b4.Te6edf3getContextTb4b4b4(Ta5d6ff"2d"Tb4b4b4)Tb4b4b4;

T8b949e// draw background circle with subtle gradient
Tff7b72const Te6edf3gradient Tff7b72= Te6edf3ctxTb4b4b4.Te6edf3createLinearGradientTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, Te6edf3sizeTb4b4b4)Tb4b4b4;
Te6edf3gradientTb4b4b4.Te6edf3addColorStopTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3backgroundColorTb4b4b4)Tb4b4b4;
Te6edf3gradientTb4b4b4.Te6edf3addColorStopTb4b4b4(T79c0ff1Tb4b4b4, Te6edf3backgroundColorTb4b4b4)Tb4b4b4;

Te6edf3ctxTb4b4b4.Te6edf3fillStyle Tff7b72= Te6edf3gradientTb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3beginPathTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3arcTb4b4b4(Te6edf3size Tff7b72/ T79c0ff2Tb4b4b4, Te6edf3size Tff7b72/ T79c0ff2Tb4b4b4, Te6edf3size Tff7b72/ T79c0ff2 Tff7b72- T79c0ff2Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff2 Tff7b72* Tffa657MathTb4b4b4.Te6edf3PITb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3fillTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// Add subtle inner shadow for depth
Tff7b72const Te6edf3innerShadow Tff7b72= Te6edf3ctxTb4b4b4.Te6edf3createRadialGradientTb4b4b4(
Te6edf3size Tff7b72/ T79c0ff2Tb4b4b4,
Te6edf3size Tff7b72/ T79c0ff2Tb4b4b4,
Te6edf3size Tff7b72/ T79c0ff2 Tff7b72- T79c0ff10Tb4b4b4,
Te6edf3size Tff7b72/ T79c0ff2Tb4b4b4,
Te6edf3size Tff7b72/ T79c0ff2Tb4b4b4,
Te6edf3size Tff7b72/ T79c0ff2
Tb4b4b4)Tb4b4b4;
Te6edf3innerShadowTb4b4b4.Te6edf3addColorStopTb4b4b4(T79c0ff0Tb4b4b4, Ta5d6ff"rgba(0,0,0,0)"Tb4b4b4)Tb4b4b4;
Te6edf3innerShadowTb4b4b4.Te6edf3addColorStopTb4b4b4(T79c0ff1Tb4b4b4, Ta5d6ff"rgba(0,0,0,0.15)"Tb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3fillStyle Tff7b72= Te6edf3innerShadowTb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3fillTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// Add a glass highlight on top
Tff7b72const Te6edf3highlight Tff7b72= Te6edf3ctxTb4b4b4.Te6edf3createLinearGradientTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, Te6edf3sizeTb4b4b4)Tb4b4b4;
Te6edf3highlightTb4b4b4.Te6edf3addColorStopTb4b4b4(T79c0ff0Tb4b4b4, Ta5d6ff"rgba(255,255,255,0.25)"Tb4b4b4)Tb4b4b4;
Te6edf3highlightTb4b4b4.Te6edf3addColorStopTb4b4b4(T79c0ff0.5Tb4b4b4, Ta5d6ff"rgba(255,255,255,0)"Tb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3fillStyle Tff7b72= Te6edf3highlightTb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3beginPathTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3arcTb4b4b4(Te6edf3size Tff7b72/ T79c0ff2Tb4b4b4, Te6edf3size Tff7b72/ T79c0ff2Tb4b4b4, Te6edf3size Tff7b72/ T79c0ff2 Tff7b72- T79c0ff4Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff2 Tff7b72* Tffa657MathTb4b4b4.Te6edf3PITb4b4b4)Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3fillTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// stroke
Te6edf3ctxTb4b4b4.Te6edf3strokeStyle Tff7b72= Ta5d6ff"rgba(255,255,255,0.2)"Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3lineWidth Tff7b72= T79c0ff2Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3strokeTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// load MDI icon SVG
Tff7b72const Te6edf3iconSvg Tff7b72= Tff7b72thisTb4b4b4.Te6edf3getMdiIconSvgTb4b4b4(Te6edf3iconNameTb4b4b4, Te6edf3foregroundColorTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3img Tff7b72= Tff7b72new Te6edf3ImageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3svgBlob Tff7b72= Tff7b72new Te6edf3BlobTb4b4b4(Tb4b4b4[Te6edf3iconSvgTb4b4b4]Tb4b4b4, Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"image/svg+xml" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3url Tff7b72= Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3svgBlobTb4b4b4)Tb4b4b4;
Te6edf3imgTb4b4b4.Te6edf3onload Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// Draw a subtle shadow for the icon itself
Te6edf3ctxTb4b4b4.Te6edf3shadowColor Tff7b72= Ta5d6ff"rgba(0,0,0,0.2)"Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3shadowBlur Tff7b72= T79c0ff4Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3shadowOffsetX Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3shadowOffsetY Tff7b72= T79c0ff2Tb4b4b4;

Te6edf3ctxTb4b4b4.Te6edf3drawImageTb4b4b4(Te6edf3imgTb4b4b4, Te6edf3size Tff7b72* T79c0ff0.22Tb4b4b4, Te6edf3size Tff7b72* T79c0ff0.22Tb4b4b4, Te6edf3size Tff7b72* T79c0ff0.56Tb4b4b4, Te6edf3size Tff7b72* T79c0ff0.56Tb4b4b4)Tb4b4b4;

T8b949e// Reset shadow for next operations
Te6edf3ctxTb4b4b4.Te6edf3shadowColor Tff7b72= Ta5d6ff"transparent"Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3shadowBlur Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3shadowOffsetX Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3ctxTb4b4b4.Te6edf3shadowOffsetY Tff7b72= T79c0ff0Tb4b4b4;

Te6edf3URLTb4b4b4.Te6edf3revokeObjectURLTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3dataUrl Tff7b72= Te6edf3canvasTb4b4b4.Te6edf3toDataURLTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4[Te6edf3cacheKeyTb4b4b4] Tff7b72= Te6edf3dataUrlTb4b4b4;
Te6edf3resolveTb4b4b4(Te6edf3dataUrlTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Te6edf3imgTb4b4b4.Te6edf3onerror Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3URLTb4b4b4.Te6edf3revokeObjectURLTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3dataUrl Tff7b72= Te6edf3canvasTb4b4b4.Te6edf3toDataURLTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3iconCacheTb4b4b4[Te6edf3cacheKeyTb4b4b4] Tff7b72= Te6edf3dataUrlTb4b4b4;
Te6edf3resolveTb4b4b4(Te6edf3dataUrlTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Te6edf3imgTb4b4b4.Te6edf3src Tff7b72= Te6edf3urlTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3getMdiIconSvgTb4b4b4(Te6edf3iconNameTb4b4b4, Te6edf3foregroundColorTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3mdiIconName Tff7b72=
Ta5d6ff"mdi" Tff7b72+
Te6edf3iconName
Tb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"-"Tb4b4b4)
Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3wordTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72return Te6edf3wordTb4b4b4.Te6edf3charAtTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4.Te6edf3toUpperCaseTb4b4b4(Tb4b4b4) Tff7b72+ Te6edf3wordTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)
Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff""Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3iconPath Tff7b72= Te6edf3mdiTb4b4b4[Te6edf3mdiIconNameTb4b4b4] Tff7b72|| Te6edf3mdiTb4b4b4[Ta5d6ff"mdiAccountOutline"Tb4b4b4]Tb4b4b4;

Tff7b72return Ta5d6ff`Ta5d6ff<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="Tffd700${Te6edf3foregroundColorTffd700}Ta5d6ff" d="Tffd700${Te6edf3iconPathTffd700}Ta5d6ff"/></svg>Ta5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3startOrbitTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3stopOrbitTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// Disable physics while orbiting
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3setOptionsTb4b4b4(Tb4b4b4{ Te6edf3physicsTff7b72: Tb4b4b4{ Te6edf3enabledTff7b72: Tff7b72false Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// Hide edges
Tff7b72const Te6edf3edges Tff7b72= Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3updatedEdges Tff7b72= Te6edf3edgesTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3edgeTb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{ Te6edf3idTff7b72: Te6edf3edgeTb4b4b4.Te6edf3idTb4b4b4, Te6edf3hiddenTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3updatedEdgesTb4b4b4)Tb4b4b4;

T8b949e// Get current positions of nodes to start orbit from where they are
Tff7b72const Te6edf3nodeIds Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3getIdsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3positions Tff7b72= Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3getPositionsTb4b4b4(Te6edf3nodeIdsTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3mePos Tff7b72= Te6edf3positionsTb4b4b4[Ta5d6ff"me"Tb4b4b4] Tff7b72|| Tb4b4b4{ Te6edf3xTff7b72: T79c0ff0Tb4b4b4, Te6edf3yTff7b72: T79c0ff0 Tb4b4b4}Tb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3_orbitNodes Tff7b72= Te6edf3nodeIds
Tb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3idTb4b4b4) Tb4b4b4=> Te6edf3id Tff7b72!== Ta5d6ff"me"Tb4b4b4)
Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3idTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3pos Tff7b72= Te6edf3positionsTb4b4b4[Te6edf3idTb4b4b4] Tff7b72|| Tb4b4b4{
Te6edf3xTff7b72: Tffa657MathTb4b4b4.Te6edf3randomTb4b4b4(Tb4b4b4) Tff7b72* T79c0ff1000 Tff7b72- T79c0ff500Tb4b4b4,
Te6edf3yTff7b72: Tffa657MathTb4b4b4.Te6edf3randomTb4b4b4(Tb4b4b4) Tff7b72* T79c0ff1000 Tff7b72- T79c0ff500Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3dx Tff7b72= Te6edf3posTb4b4b4.Te6edf3x Tff7b72- Te6edf3mePosTb4b4b4.Te6edf3xTb4b4b4;
Tff7b72const Te6edf3dy Tff7b72= Te6edf3posTb4b4b4.Te6edf3y Tff7b72- Te6edf3mePosTb4b4b4.Te6edf3yTb4b4b4;
Tff7b72const Te6edf3radius Tff7b72= Tffa657MathTb4b4b4.Te6edf3sqrtTb4b4b4(Te6edf3dx Tff7b72* Te6edf3dx Tff7b72+ Te6edf3dy Tff7b72* Te6edf3dyTb4b4b4) Tff7b72|| Tffa657MathTb4b4b4.Te6edf3randomTb4b4b4(Tb4b4b4) Tff7b72* T79c0ff500 Tff7b72+ T79c0ff100Tb4b4b4;
Tff7b72return Tb4b4b4{
Te6edf3idTff7b72: Te6edf3idTb4b4b4,
Te6edf3radiusTff7b72: Te6edf3radiusTb4b4b4,
Te6edf3angleTff7b72: Tffa657MathTb4b4b4.Te6edf3atan2Tb4b4b4(Te6edf3dyTb4b4b4, Te6edf3dxTb4b4b4)Tb4b4b4,
T8b949e// Random speed based on radius - further nodes move slower usually, but let's make it more dynamic
Te6edf3speedTff7b72: Tb4b4b4(T79c0ff0.002 Tff7b72+ Tffa657MathTb4b4b4.Te6edf3randomTb4b4b4(Tb4b4b4) Tff7b72* T79c0ff0.005Tb4b4b4) Tff7b72* Tb4b4b4(Tffa657MathTb4b4b4.Te6edf3randomTb4b4b4(Tb4b4b4) Tff7b72> T79c0ff0.5 Tff7b72? T79c0ff1 Tff7b72: Tff7b72-T79c0ff1Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3animate Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3enableOrbitTb4b4b4) Tff7b72returnTb4b4b4;

T8b949e// Get current position of 'me' node in case it was dragged
Tff7b72const Te6edf3positions Tff7b72= Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3getPositionsTb4b4b4(Tb4b4b4[Ta5d6ff"me"Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3mePos Tff7b72= Te6edf3positionsTb4b4b4[Ta5d6ff"me"Tb4b4b4] Tff7b72|| Tb4b4b4{ Te6edf3xTff7b72: T79c0ff0Tb4b4b4, Te6edf3yTff7b72: T79c0ff0 Tb4b4b4}Tb4b4b4;

Tff7b72const Te6edf3updates Tff7b72= Tff7b72thisTb4b4b4.Te6edf3_orbitNodesTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3dataTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3dataTb4b4b4.Te6edf3angle Tff7b72+= Te6edf3dataTb4b4b4.Te6edf3speedTb4b4b4;
Tff7b72return Tb4b4b4{
Te6edf3idTff7b72: Te6edf3dataTb4b4b4.Te6edf3idTb4b4b4,
Te6edf3xTff7b72: Te6edf3mePosTb4b4b4.Te6edf3x Tff7b72+ Tffa657MathTb4b4b4.Te6edf3cosTb4b4b4(Te6edf3dataTb4b4b4.Te6edf3angleTb4b4b4) Tff7b72* Te6edf3dataTb4b4b4.Te6edf3radiusTb4b4b4,
Te6edf3yTff7b72: Te6edf3mePosTb4b4b4.Te6edf3y Tff7b72+ Tffa657MathTb4b4b4.Te6edf3sinTb4b4b4(Te6edf3dataTb4b4b4.Te6edf3angleTb4b4b4) Tff7b72* Te6edf3dataTb4b4b4.Te6edf3radiusTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3updatesTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3orbitAnimationFrame Tff7b72= Te6edf3requestAnimationFrameTb4b4b4(Te6edf3animateTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3orbitAnimationFrame Tff7b72= Te6edf3requestAnimationFrameTb4b4b4(Te6edf3animateTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3stopOrbitTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3orbitAnimationFrameTb4b4b4) Tb4b4b4{
Te6edf3cancelAnimationFrameTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3orbitAnimationFrameTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3orbitAnimationFrame Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}

T8b949e// Restore edges visibility
Tff7b72const Te6edf3edges Tff7b72= Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3updatedEdges Tff7b72= Te6edf3edgesTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3edgeTb4b4b4) Tb4b4b4=> Tb4b4b4(Tb4b4b4{ Te6edf3idTff7b72: Te6edf3edgeTb4b4b4.Te6edf3idTb4b4b4, Te6edf3hiddenTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3updatedEdgesTb4b4b4)Tb4b4b4;

T8b949e// Re-enable physics if it was enabled
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3setOptionsTb4b4b4(Tb4b4b4{ Te6edf3physicsTff7b72: Tb4b4b4{ Te6edf3enabledTff7b72: Tff7b72thisTb4b4b4.Te6edf3enablePhysics Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3initTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3container Tff7b72= Tffa657documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff"network"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3isDarkMode Tff7b72= Tffa657documentTb4b4b4.Te6edf3documentElementTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3containsTb4b4b4(Ta5d6ff"dark"Tb4b4b4)Tb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3network Tff7b72= Tff7b72new Te6edf3NetworkTb4b4b4(
Te6edf3containerTb4b4b4,
Tb4b4b4{
Te6edf3nodesTff7b72: Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4,
Te6edf3edgesTff7b72: Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Te6edf3interactionTff7b72: Tb4b4b4{
Te6edf3tooltipDelayTff7b72: T79c0ff100Tb4b4b4,
Te6edf3hoverTff7b72: Tff7b72trueTb4b4b4,
Te6edf3hideEdgesOnDragTff7b72: Tff7b72trueTb4b4b4,
Te6edf3hideEdgesOnZoomTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3layoutTff7b72: Tb4b4b4{
Te6edf3randomSeedTff7b72: T79c0ff42Tb4b4b4,
Te6edf3improvedLayoutTff7b72: Tff7b72falseTb4b4b4, T8b949e// faster for large networks
Tb4b4b4}Tb4b4b4,
Te6edf3physicsTff7b72: Tb4b4b4{
Te6edf3enabledTff7b72: Tff7b72thisTb4b4b4.Te6edf3enablePhysicsTb4b4b4,
Te6edf3solverTff7b72: Ta5d6ff"barnesHut"Tb4b4b4,
Te6edf3barnesHutTff7b72: Tb4b4b4{
Te6edf3gravitationalConstantTff7b72: Tff7b72-T79c0ff10000Tb4b4b4,
Te6edf3springConstantTff7b72: T79c0ff0.02Tb4b4b4,
Te6edf3springLengthTff7b72: T79c0ff200Tb4b4b4,
Te6edf3dampingTff7b72: T79c0ff0.4Tb4b4b4,
Te6edf3avoidOverlapTff7b72: T79c0ff1Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3stabilizationTff7b72: Tb4b4b4{
Te6edf3enabledTff7b72: Tff7b72trueTb4b4b4,
Te6edf3iterationsTff7b72: T79c0ff150Tb4b4b4,
Te6edf3updateIntervalTff7b72: T79c0ff25Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3nodesTff7b72: Tb4b4b4{
Te6edf3borderWidthTff7b72: T79c0ff3Tb4b4b4,
Te6edf3borderWidthSelectedTff7b72: T79c0ff6Tb4b4b4,
Te6edf3fontTff7b72: Tb4b4b4{
Te6edf3faceTff7b72: Ta5d6ff"Inter, system-ui, sans-serif"Tb4b4b4,
Te6edf3strokeWidthTff7b72: T79c0ff4Tb4b4b4,
Te6edf3strokeColorTff7b72: Te6edf3isDarkMode Tff7b72? Ta5d6ff"rgba(9, 9, 11, 0.95)" Tff7b72: Ta5d6ff"rgba(255, 255, 255, 0.95)"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3shadowTff7b72: Tb4b4b4{
Te6edf3enabledTff7b72: Tff7b72trueTb4b4b4,
Te6edf3colorTff7b72: Ta5d6ff"rgba(0,0,0,0.24)"Tb4b4b4,
Te6edf3sizeTff7b72: T79c0ff10Tb4b4b4,
Te6edf3xTff7b72: T79c0ff0Tb4b4b4,
Te6edf3yTff7b72: T79c0ff4Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3edgesTff7b72: Tb4b4b4{
Te6edf3smoothTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"continuous"Tb4b4b4,
Te6edf3roundnessTff7b72: T79c0ff0.5Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3selectionWidthTff7b72: T79c0ff3Tb4b4b4,
Te6edf3hoverWidthTff7b72: T79c0ff2Tb4b4b4,
Te6edf3colorTff7b72: Tb4b4b4{
Te6edf3opacityTff7b72: T79c0ff0.6Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}
Tb4b4b4)Tb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3networkTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"doubleClick"Tb4b4b4, Tb4b4b4(Te6edf3paramsTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3clickedNodeId Tff7b72= Te6edf3paramsTb4b4b4.Te6edf3nodesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3clickedNodeIdTb4b4b4) Tff7b72returnTb4b4b4;

Tff7b72const Te6edf3node Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3getTb4b4b4(Te6edf3clickedNodeIdTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3node Tff7b72|| Tff7b72!Te6edf3nodeTb4b4b4.Te6edf3_announceTb4b4b4) Tff7b72returnTb4b4b4;

Tff7b72const Te6edf3announce Tff7b72= Te6edf3nodeTb4b4b4.Te6edf3_announceTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3announceTb4b4b4.Te6edf3aspect Tff7b72=== Ta5d6ff"lxmf.delivery"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"messages"Tb4b4b4,
Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3destinationHashTff7b72: Te6edf3announceTb4b4b4.Te6edf3destination_hash Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3announceTb4b4b4.Te6edf3aspect Tff7b72=== Ta5d6ff"nomadnetwork.node"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"nomadnetwork"Tb4b4b4,
Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3destinationHashTff7b72: Te6edf3announceTb4b4b4.Te6edf3destination_hash Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Tff7b72await Tff7b72thisTb4b4b4.Te6edf3manualUpdateTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// auto reload
Tff7b72thisTb4b4b4.Te6edf3reloadInterval Tff7b72= Te6edf3setIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3onAutoReloadTb4b4b4, T79c0ff15000Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3manualUpdateTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isLoadingTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isUpdating Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3updateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isLoading Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isUpdating Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onAutoReloadTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3autoReload Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isUpdating Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isLoadingTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isUpdating Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3updateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isUpdating Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3updateTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff"Fetching basic info..."Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentBatch Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3totalBatches Tff7b72= T79c0ff0Tb4b4b4;

Tff7b72await Tffa657PromiseTb4b4b4.Te6edf3allTb4b4b4(Tb4b4b4[Tff7b72thisTb4b4b4.Te6edf3getConfigTb4b4b4(Tb4b4b4)Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3getInterfaceStatsTb4b4b4(Tb4b4b4)Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3getConversationsTb4b4b4(Tb4b4b4)Tb4b4b4]Tb4b4b4)Tb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff"Fetching network data..."Tb4b4b4;
Tff7b72await Tffa657PromiseTb4b4b4.Te6edf3allTb4b4b4(Tb4b4b4[Tff7b72thisTb4b4b4.Te6edf3getPathTableBatchTb4b4b4(Tb4b4b4)Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3getAnnouncesBatchTb4b4b4(Tb4b4b4)Tb4b4b4]Tb4b4b4)Tb4b4b4;

Tff7b72await Tff7b72thisTb4b4b4.Te6edf3processVisualizationTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3processVisualizationTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff"Processing visualization..."Tb4b4b4;

Tff7b72const Te6edf3processedNodeIds Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3processedEdgeIds Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3isDarkMode Tff7b72= Tffa657documentTb4b4b4.Te6edf3documentElementTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3containsTb4b4b4(Ta5d6ff"dark"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3fontColor Tff7b72= Te6edf3isDarkMode Tff7b72? Ta5d6ff"#ffffff" Tff7b72: Ta5d6ff"#000000"Tb4b4b4;

T8b949e// search filter helper
Tff7b72const Te6edf3searchLower Tff7b72= Tff7b72thisTb4b4b4.Te6edf3searchQueryTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3matchesSearch Tff7b72= Tb4b4b4(Te6edf3textTb4b4b4) Tb4b4b4=> Tff7b72!Tff7b72thisTb4b4b4.Te6edf3searchQuery Tff7b72|| Tb4b4b4(Te6edf3text Tff7b72&& Te6edf3textTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3searchLowerTb4b4b4)Tb4b4b4)Tb4b4b4;

T8b949e// Add me
Tff7b72const Te6edf3meLabel Tff7b72= Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3display_name Tff7b72?? Ta5d6ff"Local Node"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3matchesSearchTb4b4b4(Te6edf3meLabelTb4b4b4) Tff7b72|| Te6edf3matchesSearchTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3identity_hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3meNode Tff7b72= Tb4b4b4{
Te6edf3idTff7b72: Ta5d6ff"me"Tb4b4b4,
Te6edf3groupTff7b72: Ta5d6ff"me"Tb4b4b4,
Te6edf3sizeTff7b72: T79c0ff50Tb4b4b4,
Te6edf3shapeTff7b72: Ta5d6ff"circularImage"Tb4b4b4,
Te6edf3imageTff7b72: Tff7b72thisTb4b4b4.Te6edf3reticulumLogoPathTb4b4b4,
Te6edf3labelTff7b72: Te6edf3meLabelTb4b4b4,
Te6edf3titleTff7b72: Ta5d6ff`Ta5d6ffLocal Node: Tffd700${Te6edf3meLabelTffd700}Ta5d6ff\nTa5d6ffIdentity: Tffd700${Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3identity_hash Tff7b72?? Ta5d6ff"Unknown"Tffd700}Ta5d6ff`Tb4b4b4,
Te6edf3colorTff7b72: Tb4b4b4{ Te6edf3borderTff7b72: Ta5d6ff"#3b82f6"Tb4b4b4, Te6edf3backgroundTff7b72: Te6edf3isDarkMode Tff7b72? Ta5d6ff"#1e40af" Tff7b72: Ta5d6ff"#eff6ff" Tb4b4b4}Tb4b4b4,
Te6edf3fontTff7b72: Tb4b4b4{ Te6edf3colorTff7b72: Te6edf3fontColorTb4b4b4, Te6edf3sizeTff7b72: T79c0ff16Tb4b4b4, Te6edf3boldTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4,
Te6edf3xTff7b72: T79c0ff0Tb4b4b4,
Te6edf3yTff7b72: T79c0ff0Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3updateTb4b4b4(Tb4b4b4[Te6edf3meNodeTb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3processedNodeIdsTb4b4b4.Te6edf3addTb4b4b4(Ta5d6ff"me"Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// Add interfaces
Tff7b72const Te6edf3interfaceNodes Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3interfaceEdges Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3interfaceCount Tff7b72= Tff7b72thisTb4b4b4.Te6edf3interfacesTb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72const Te6edf3radius Tff7b72= T79c0ff400Tb4b4b4; T8b949e// Start interfaces at 400px from center

Tff7b72for Tb4b4b4(Tff7b72let Te6edf3idx Tff7b72= T79c0ff0Tb4b4b4; Te6edf3idx Tff7b72< Te6edf3interfaceCountTb4b4b4; Te6edf3idxTff7b72++Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3entry Tff7b72= Tff7b72thisTb4b4b4.Te6edf3interfacesTb4b4b4[Te6edf3idxTb4b4b4]Tb4b4b4;
Tff7b72let Te6edf3label Tff7b72= Te6edf3entryTb4b4b4.Te6edf3interface_name Tff7b72?? Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3entryTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"LocalServerInterface" Tff7b72|| Te6edf3entryTb4b4b4.Te6edf3parent_interface_name Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3label Tff7b72= Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4;
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3matchesSearchTb4b4b4(Te6edf3labelTb4b4b4) Tff7b72|| Te6edf3matchesSearchTb4b4b4(Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4) Tb4b4b4{
T8b949e// Distribute interfaces in a circle
Tff7b72const Te6edf3angle Tff7b72= Tb4b4b4(Te6edf3idx Tff7b72/ Te6edf3interfaceCountTb4b4b4) Tff7b72* T79c0ff2 Tff7b72* Tffa657MathTb4b4b4.Te6edf3PITb4b4b4;
Tff7b72const Te6edf3initialX Tff7b72= Tffa657MathTb4b4b4.Te6edf3cosTb4b4b4(Te6edf3angleTb4b4b4) Tff7b72* Te6edf3radiusTb4b4b4;
Tff7b72const Te6edf3initialY Tff7b72= Tffa657MathTb4b4b4.Te6edf3sinTb4b4b4(Te6edf3angleTb4b4b4) Tff7b72* Te6edf3radiusTb4b4b4;

Te6edf3interfaceNodesTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3idTff7b72: Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4,
Te6edf3groupTff7b72: Ta5d6ff"interface"Tb4b4b4,
Te6edf3labelTff7b72: Te6edf3labelTb4b4b4,
Te6edf3titleTff7b72: Ta5d6ff`Tffd700${Te6edf3entryTb4b4b4.Te6edf3nameTffd700}Ta5d6ff\nTa5d6ffState: Tffd700${Te6edf3entryTb4b4b4.Te6edf3status Tff7b72? Ta5d6ff"Online" Tff7b72: Ta5d6ff"Offline"Tffd700}Ta5d6ff\nTa5d6ffBitrate: Tffd700${Te6edf3UtilsTb4b4b4.Te6edf3formatBitsPerSecondTb4b4b4(Te6edf3entryTb4b4b4.Te6edf3bitrateTb4b4b4)Tffd700}Ta5d6ff\nTa5d6ffTX: Tffd700${Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3entryTb4b4b4.Te6edf3txbTb4b4b4)Tffd700}Ta5d6ff\nTa5d6ffRX: Tffd700${Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3entryTb4b4b4.Te6edf3rxbTb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4,
Te6edf3sizeTff7b72: T79c0ff35Tb4b4b4,
Te6edf3shapeTff7b72: Ta5d6ff"circularImage"Tb4b4b4,
Te6edf3imageTff7b72: Te6edf3entryTb4b4b4.Te6edf3status
Tff7b72? Ta5d6ff"/assets/images/network-visualiser/interface_connected.png"
Tff7b72: Ta5d6ff"/assets/images/network-visualiser/interface_disconnected.png"Tb4b4b4,
Te6edf3colorTff7b72: Tb4b4b4{
Te6edf3borderTff7b72: Te6edf3entryTb4b4b4.Te6edf3status Tff7b72? Ta5d6ff"#10b981" Tff7b72: Ta5d6ff"#ef4444"Tb4b4b4,
Te6edf3backgroundTff7b72: Te6edf3isDarkMode Tff7b72? Ta5d6ff"#064e3b" Tff7b72: Ta5d6ff"#ecfdf5"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3fontTff7b72: Tb4b4b4{ Te6edf3colorTff7b72: Te6edf3fontColorTb4b4b4, Te6edf3sizeTff7b72: T79c0ff12Tb4b4b4, Te6edf3boldTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4,
Te6edf3xTff7b72: Te6edf3initialXTb4b4b4,
Te6edf3yTff7b72: Te6edf3initialYTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3processedNodeIdsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3edgeId Tff7b72= Ta5d6ff`Ta5d6ffme~Tffd700${Te6edf3entryTb4b4b4.Te6edf3nameTffd700}Ta5d6ff`Tb4b4b4;
Te6edf3interfaceEdgesTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3idTff7b72: Te6edf3edgeIdTb4b4b4,
Tff7b72fromTff7b72: Ta5d6ff"me"Tb4b4b4,
Te6edf3toTff7b72: Te6edf3entryTb4b4b4.Te6edf3nameTb4b4b4,
Te6edf3colorTff7b72: Te6edf3entryTb4b4b4.Te6edf3status Tff7b72? Tb4b4b4(Te6edf3isDarkMode Tff7b72? Ta5d6ff"#065f46" Tff7b72: Ta5d6ff"#10b981"Tb4b4b4) Tff7b72: Te6edf3isDarkMode Tff7b72? Ta5d6ff"#7f1d1d" Tff7b72: Ta5d6ff"#ef4444"Tb4b4b4,
Te6edf3widthTff7b72: T79c0ff3Tb4b4b4,
Te6edf3lengthTff7b72: T79c0ff200Tb4b4b4,
Te6edf3arrowsTff7b72: Tb4b4b4{ Te6edf3toTff7b72: Tb4b4b4{ Te6edf3enabledTff7b72: Tff7b72trueTb4b4b4, Te6edf3scaleFactorTff7b72: T79c0ff0.5 Tb4b4b4} Tb4b4b4}Tb4b4b4,
Te6edf3hiddenTff7b72: Tff7b72thisTb4b4b4.Te6edf3enableOrbitTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3processedEdgeIdsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3edgeIdTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3interfaceNodesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3interfaceNodesTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3interfaceEdgesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3interfaceEdgesTb4b4b4)Tb4b4b4;

T8b949e// Process path table in batches to prevent UI block
Tff7b72thisTb4b4b4.Te6edf3totalNodesToLoad Tff7b72= Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadedNodesCount Tff7b72= T79c0ff0Tb4b4b4;

Tff7b72const Te6edf3aspectsToShow Tff7b72= Tb4b4b4[Ta5d6ff"lxmf.delivery"Tb4b4b4, Ta5d6ff"nomadnetwork.node"Tb4b4b4]Tb4b4b4;

T8b949e// Process in chunks of 25 for smooth visual updates
Tff7b72const Te6edf3chunkSize Tff7b72= T79c0ff25Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3totalBatches Tff7b72= Tffa657MathTb4b4b4.Te6edf3ceilTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3length Tff7b72/ Te6edf3chunkSizeTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentBatch Tff7b72= T79c0ff0Tb4b4b4;

Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3i Tff7b72+= Te6edf3chunkSizeTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3currentBatchTff7b72++Tb4b4b4;
Tff7b72const Te6edf3chunk Tff7b72= Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3iTb4b4b4, Te6edf3i Tff7b72+ Te6edf3chunkSizeTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3batchNodes Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3batchEdges Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;

Tff7b72for Tb4b4b4(Tff7b72const Te6edf3entry Tff7b72of Te6edf3chunkTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadedNodesCountTff7b72++Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3entryTb4b4b4.Te6edf3hops Tff7b72== Tff7b72nullTb4b4b4) Tff7b72continueTb4b4b4;

Tff7b72const Te6edf3announce Tff7b72= Tff7b72thisTb4b4b4.Te6edf3announcesTb4b4b4[Te6edf3entryTb4b4b4.Te6edf3hashTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3announce Tff7b72|| Tff7b72!Te6edf3aspectsToShowTb4b4b4.Te6edf3includesTb4b4b4(Te6edf3announceTb4b4b4.Te6edf3aspectTb4b4b4)Tb4b4b4) Tff7b72continueTb4b4b4;

Tff7b72const Te6edf3displayName Tff7b72= Te6edf3announceTb4b4b4.Te6edf3custom_display_name Tff7b72?? Te6edf3announceTb4b4b4.Te6edf3display_nameTb4b4b4;
Tff7b72if Tb4b4b4(
Tff7b72!Te6edf3matchesSearchTb4b4b4(Te6edf3displayNameTb4b4b4) Tff7b72&&
Tff7b72!Te6edf3matchesSearchTb4b4b4(Te6edf3announceTb4b4b4.Te6edf3destination_hashTb4b4b4) Tff7b72&&
Tff7b72!Te6edf3matchesSearchTb4b4b4(Te6edf3announceTb4b4b4.Te6edf3identity_hashTb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3conversation Tff7b72= Tff7b72thisTb4b4b4.Te6edf3conversationsTb4b4b4[Te6edf3announceTb4b4b4.Te6edf3destination_hashTb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3interfaceNode Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3getTb4b4b4(Te6edf3entryTb4b4b4.Tff7b72interfaceTb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3initX Tff7b72= T79c0ff0Tb4b4b4,
Te6edf3initY Tff7b72= T79c0ff0Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3interfaceNode Tff7b72&& Te6edf3interfaceNodeTb4b4b4.Te6edf3x Tff7b72!== Tff7b72undefinedTb4b4b4) Tb4b4b4{
T8b949e// Place around their parent interface with some randomness to avoid stacking
Tff7b72const Te6edf3angle Tff7b72= Tffa657MathTb4b4b4.Te6edf3randomTb4b4b4(Tb4b4b4) Tff7b72* T79c0ff2 Tff7b72* Tffa657MathTb4b4b4.Te6edf3PITb4b4b4;
Tff7b72const Te6edf3dist Tff7b72= T79c0ff150 Tff7b72+ Tffa657MathTb4b4b4.Te6edf3randomTb4b4b4(Tb4b4b4) Tff7b72* T79c0ff150Tb4b4b4;
Te6edf3initX Tff7b72= Te6edf3interfaceNodeTb4b4b4.Te6edf3x Tff7b72+ Tffa657MathTb4b4b4.Te6edf3cosTb4b4b4(Te6edf3angleTb4b4b4) Tff7b72* Te6edf3distTb4b4b4;
Te6edf3initY Tff7b72= Te6edf3interfaceNodeTb4b4b4.Te6edf3y Tff7b72+ Tffa657MathTb4b4b4.Te6edf3sinTb4b4b4(Te6edf3angleTb4b4b4) Tff7b72* Te6edf3distTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
T8b949e// Fallback far from center
Tff7b72const Te6edf3angle Tff7b72= Tffa657MathTb4b4b4.Te6edf3randomTb4b4b4(Tb4b4b4) Tff7b72* T79c0ff2 Tff7b72* Tffa657MathTb4b4b4.Te6edf3PITb4b4b4;
Tff7b72const Te6edf3dist Tff7b72= T79c0ff600 Tff7b72+ Tffa657MathTb4b4b4.Te6edf3randomTb4b4b4(Tb4b4b4) Tff7b72* T79c0ff200Tb4b4b4;
Te6edf3initX Tff7b72= Tffa657MathTb4b4b4.Te6edf3cosTb4b4b4(Te6edf3angleTb4b4b4) Tff7b72* Te6edf3distTb4b4b4;
Te6edf3initY Tff7b72= Tffa657MathTb4b4b4.Te6edf3sinTb4b4b4(Te6edf3angleTb4b4b4) Tff7b72* Te6edf3distTb4b4b4;
Tb4b4b4}

Tff7b72const Te6edf3node Tff7b72= Tb4b4b4{
Te6edf3idTff7b72: Te6edf3entryTb4b4b4.Te6edf3hashTb4b4b4,
Te6edf3groupTff7b72: Ta5d6ff"announce"Tb4b4b4,
Te6edf3sizeTff7b72: T79c0ff25Tb4b4b4,
Te6edf3_announceTff7b72: Te6edf3announceTb4b4b4,
Te6edf3fontTff7b72: Tb4b4b4{ Te6edf3colorTff7b72: Te6edf3fontColorTb4b4b4, Te6edf3sizeTff7b72: T79c0ff11 Tb4b4b4}Tb4b4b4,
Te6edf3xTff7b72: Te6edf3initXTb4b4b4,
Te6edf3yTff7b72: Te6edf3initYTb4b4b4,
Tb4b4b4}Tb4b4b4;

Te6edf3nodeTb4b4b4.Te6edf3label Tff7b72= Te6edf3displayNameTb4b4b4;
Te6edf3nodeTb4b4b4.Te6edf3title Tff7b72= Ta5d6ff`Tffd700${Te6edf3displayNameTffd700}Ta5d6ff\nTa5d6ffAspect: Tffd700${Te6edf3announceTb4b4b4.Te6edf3aspectTffd700}Ta5d6ff\nTa5d6ffHops: Tffd700${Te6edf3entryTb4b4b4.Te6edf3hopsTffd700}Ta5d6ff\nTa5d6ffVia: Tffd700${Te6edf3entryTb4b4b4.Tff7b72interfaceTffd700}Ta5d6ff\nTa5d6ffLast Seen: Tffd700${Te6edf3UtilsTb4b4b4.Te6edf3convertDateTimeToLocalDateTimeStringTb4b4b4(Tff7b72new Tffa657DateTb4b4b4(Te6edf3announceTb4b4b4.Te6edf3updated_atTb4b4b4)Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3announceTb4b4b4.Te6edf3aspect Tff7b72=== Ta5d6ff"lxmf.delivery"Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3conversationTff7b72?Tb4b4b4.Te6edf3lxmf_user_iconTb4b4b4) Tb4b4b4{
Te6edf3nodeTb4b4b4.Te6edf3shape Tff7b72= Ta5d6ff"circularImage"Tb4b4b4;
Te6edf3nodeTb4b4b4.Te6edf3image Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3createIconImageTb4b4b4(
Te6edf3conversationTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3icon_nameTb4b4b4,
Te6edf3conversationTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3foreground_colourTb4b4b4,
Te6edf3conversationTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3background_colourTb4b4b4,
T79c0ff64
Tb4b4b4)Tb4b4b4;
Te6edf3nodeTb4b4b4.Te6edf3size Tff7b72= T79c0ff30Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3nodeTb4b4b4.Te6edf3shape Tff7b72= Ta5d6ff"circularImage"Tb4b4b4;
Te6edf3nodeTb4b4b4.Te6edf3image Tff7b72=
Te6edf3entryTb4b4b4.Te6edf3hops Tff7b72=== T79c0ff1
Tff7b72? Ta5d6ff"/assets/images/network-visualiser/user_1hop.png"
Tff7b72: Ta5d6ff"/assets/images/network-visualiser/user.png"Tb4b4b4;
Tb4b4b4}
Te6edf3nodeTb4b4b4.Te6edf3color Tff7b72= Tb4b4b4{
Te6edf3borderTff7b72: Te6edf3entryTb4b4b4.Te6edf3hops Tff7b72=== T79c0ff1 Tff7b72? Ta5d6ff"#10b981" Tff7b72: Ta5d6ff"#3b82f6"Tb4b4b4,
Te6edf3backgroundTff7b72:
Te6edf3entryTb4b4b4.Te6edf3hops Tff7b72=== T79c0ff1
Tff7b72? Te6edf3isDarkMode
Tff7b72? Ta5d6ff"#064e3b"
Tff7b72: Ta5d6ff"#ecfdf5"
Tff7b72: Te6edf3isDarkMode
Tff7b72? Ta5d6ff"#1e40af"
Tff7b72: Ta5d6ff"#eff6ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3announceTb4b4b4.Te6edf3aspect Tff7b72=== Ta5d6ff"nomadnetwork.node"Tb4b4b4) Tb4b4b4{
Te6edf3nodeTb4b4b4.Te6edf3shape Tff7b72= Ta5d6ff"circularImage"Tb4b4b4;
Te6edf3nodeTb4b4b4.Te6edf3image Tff7b72=
Te6edf3entryTb4b4b4.Te6edf3hops Tff7b72=== T79c0ff1
Tff7b72? Ta5d6ff"/assets/images/network-visualiser/server_1hop.png"
Tff7b72: Ta5d6ff"/assets/images/network-visualiser/server.png"Tb4b4b4;
Te6edf3nodeTb4b4b4.Te6edf3color Tff7b72= Tb4b4b4{
Te6edf3borderTff7b72: Te6edf3entryTb4b4b4.Te6edf3hops Tff7b72=== T79c0ff1 Tff7b72? Ta5d6ff"#10b981" Tff7b72: Ta5d6ff"#8b5cf6"Tb4b4b4,
Te6edf3backgroundTff7b72:
Te6edf3entryTb4b4b4.Te6edf3hops Tff7b72=== T79c0ff1
Tff7b72? Te6edf3isDarkMode
Tff7b72? Ta5d6ff"#064e3b"
Tff7b72: Ta5d6ff"#ecfdf5"
Tff7b72: Te6edf3isDarkMode
Tff7b72? Ta5d6ff"#4c1d95"
Tff7b72: Ta5d6ff"#f5f3ff"Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}

Te6edf3batchNodesTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3nodeTb4b4b4)Tb4b4b4;
Te6edf3processedNodeIdsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3edgeId Tff7b72= Ta5d6ff`Tffd700${Te6edf3entryTb4b4b4.Tff7b72interfaceTffd700}Ta5d6ff~Tffd700${Te6edf3entryTb4b4b4.Te6edf3hashTffd700}Ta5d6ff`Tb4b4b4;
Te6edf3batchEdgesTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3idTff7b72: Te6edf3edgeIdTb4b4b4,
Tff7b72fromTff7b72: Te6edf3entryTb4b4b4.Tff7b72interfaceTb4b4b4,
Te6edf3toTff7b72: Te6edf3entryTb4b4b4.Te6edf3hashTb4b4b4,
Te6edf3colorTff7b72: Tb4b4b4{
Te6edf3colorTff7b72:
Te6edf3entryTb4b4b4.Te6edf3hops Tff7b72=== T79c0ff1
Tff7b72? Te6edf3isDarkMode
Tff7b72? Ta5d6ff"#065f46"
Tff7b72: Ta5d6ff"#10b981"
Tff7b72: Te6edf3isDarkMode
Tff7b72? Ta5d6ff"#1e3a8a"
Tff7b72: Ta5d6ff"#3b82f6"Tb4b4b4,
Te6edf3opacityTff7b72: Te6edf3entryTb4b4b4.Te6edf3hops Tff7b72=== T79c0ff1 Tff7b72? T79c0ff1 Tff7b72: T79c0ff0.5Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3widthTff7b72: Te6edf3entryTb4b4b4.Te6edf3hops Tff7b72=== T79c0ff1 Tff7b72? T79c0ff2 Tff7b72: T79c0ff1Tb4b4b4,
Te6edf3dashesTff7b72: Te6edf3entryTb4b4b4.Te6edf3hops Tff7b72> T79c0ff1Tb4b4b4,
Te6edf3hiddenTff7b72: Tff7b72thisTb4b4b4.Te6edf3enableOrbitTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3processedEdgeIdsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3edgeIdTb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// Update DataSet incrementally
Tff7b72if Tb4b4b4(Te6edf3batchNodesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3batchNodesTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3batchEdgesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4.Te6edf3updateTb4b4b4(Te6edf3batchEdgesTb4b4b4)Tb4b4b4;

T8b949e// Allow UI to breathe and show progress
Tff7b72thisTb4b4b4.Te6edf3loadingStatus Tff7b72= Ta5d6ff`Ta5d6ffProcessing Batch Tffd700${Tff7b72thisTb4b4b4.Te6edf3currentBatchTffd700}Ta5d6ff / Tffd700${Tff7b72thisTb4b4b4.Te6edf3totalBatchesTffd700}Ta5d6ff...Ta5d6ff`Tb4b4b4;
T8b949e// Faster batching: only delay if there's many nodes, and use a shorter delay
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3pathTableTb4b4b4.Te6edf3length Tff7b72> T79c0ff100Tb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72new Tffa657PromiseTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3setTimeoutTb4b4b4(Te6edf3rTb4b4b4, T79c0ff10Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
T8b949e// Small networks update instantly
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

T8b949e// Cleanup: remove nodes/edges that are no longer in the network
Tff7b72const Te6edf3nodesToRemove Tff7b72= Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3getIdsTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3idTb4b4b4) Tb4b4b4=> Tff7b72!Te6edf3processedNodeIdsTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3idTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3nodesToRemoveTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tff7b72thisTb4b4b4.Te6edf3nodesTb4b4b4.Te6edf3removeTb4b4b4(Te6edf3nodesToRemoveTb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3edgesToRemove Tff7b72= Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4.Te6edf3getIdsTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3idTb4b4b4) Tb4b4b4=> Tff7b72!Te6edf3processedEdgeIdsTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3idTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3edgesToRemoveTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tff7b72thisTb4b4b4.Te6edf3edgesTb4b4b4.Te6edf3removeTb4b4b4(Te6edf3edgesToRemoveTb4b4b4)Tb4b4b4;

Tff7b72thisTb4b4b4.Te6edf3totalNodesToLoad Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadedNodesCount Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3currentBatch Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3totalBatches Tff7b72= T79c0ff0Tb4b4b4;

Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3enableOrbitTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3startOrbitTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>

Tb4b4b4<Tff7b72styleTb4b4b4>
Tb4b4b4.T56d364vis-networkTb4b4b4:Tf0883efocus Tb4b4b4{
Tff7b72outlineTb4b4b4: Tff7b72noneTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364vis-tooltip Tb4b4b4{
Tff7b72colorTb4b4b4: T79c0ff#f4f4f5 Tff7b72!importantTb4b4b4;
Tff7b72backgroundTb4b4b4: Tffa657rgbaTb4b4b4(T79c0ff9Tb4b4b4, T79c0ff9Tb4b4b4, T79c0ff11Tb4b4b4, T79c0ff0.9Tb4b4b4) Tff7b72!importantTb4b4b4;
Tff7b72borderTb4b4b4: T79c0ff1Tffa657px Tff7b72solid Tffa657rgbaTb4b4b4(T79c0ff63Tb4b4b4, T79c0ff63Tb4b4b4, T79c0ff70Tb4b4b4, T79c0ff0.5Tb4b4b4) Tff7b72!importantTb4b4b4;
Tff7b72border-radiusTb4b4b4: T79c0ff12Tffa657px Tff7b72!importantTb4b4b4;
Tff7b72paddingTb4b4b4: T79c0ff12Tffa657px T79c0ff16Tffa657px Tff7b72!importantTb4b4b4;
Tff7b72font-sizeTb4b4b4: T79c0ff13Tffa657px Tff7b72!importantTb4b4b4;
Tff7b72font-weightTb4b4b4: T79c0ff500 Tff7b72!importantTb4b4b4;
Tff7b72font-styleTb4b4b4: Tff7b72normal Tff7b72!importantTb4b4b4;
Tff7b72font-familyTb4b4b4: Te6edf3InterTb4b4b4, Te6edf3system-uiTb4b4b4, Tff7b72sans-serif Tff7b72!importantTb4b4b4;
Tff7b72line-heightTb4b4b4: T79c0ff1.5 Tff7b72!importantTb4b4b4;
Te6edf3backdrop-filterTb4b4b4: Tffa657blurTb4b4b4(T79c0ff8Tffa657pxTb4b4b4) Tff7b72!importantTb4b4b4;
Tff7b72pointer-eventsTb4b4b4: Tff7b72none Tff7b72!importantTb4b4b4;
Tb4b4b4}

Tb4b4b4#T7ee787network Tb4b4b4{
Tff7b72background-colorTb4b4b4: T79c0ff#f8fafcTb4b4b4;
Tff7b72background-imageTb4b4b4: Tffa657radial-gradientTb4b4b4(T79c0ff#e2e8f0 T79c0ff1Tffa657pxTb4b4b4, Tff7b72transparent T79c0ff1Tffa657pxTb4b4b4)Tb4b4b4;
Tff7b72background-sizeTb4b4b4: T79c0ff32Tffa657px T79c0ff32Tffa657pxTb4b4b4;
Tb4b4b4}

Tb4b4b4.T56d364dark Tb4b4b4#T7ee787network Tb4b4b4{
Tff7b72background-colorTb4b4b4: T79c0ff#09090bTb4b4b4;
Tff7b72background-imageTb4b4b4: Tffa657radial-gradientTb4b4b4(T79c0ff#18181b T79c0ff1Tffa657pxTb4b4b4, Tff7b72transparent T79c0ff1Tffa657pxTb4b4b4)Tb4b4b4;
Tff7b72background-sizeTb4b4b4: T79c0ff32Tffa657px T79c0ff32Tffa657pxTb4b4b4;
Tb4b4b4}
Tb4b4b4<Tb4b4b4/Tff7b72styleTb4b4b4>


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────